前言
今天剛好來聊聊上次幫客戶設定的防火牆HA,之前有一個優化網路相關的維運案子,發現客戶買了兩台防火牆,一台運行,但是另外一台竟然只做備份,然後插著並關機,表示不用開著浪費電,然後我們非常傻眼,明明該防火牆有支援HA的設定,為啥不運行?後來我們進場後,就將HA設定上去了,但是後來發現非常不穩定,剛設定好運行時,常常兩台的連線斷掉,導致兩台都以為自己是主要防火牆,然後搶外部IP,造成網路不穩,雖然運行個2-3分鐘後,總算是穩定了,但是有一次我在調整設定時,八七去調整到HA的設定,導致失敗沒有噴錯,直接將我的HA關掉,然後就發生輸入外網IP,有的時候我連到是A台,有時候連到是B台,我當時怕死了,因為這樣他們公司的網路一定很不穩,後來還好連到A的時候,我將HA重新開啟,才結束這場災難,這就讓我聯想到當初上VMware Esxi管理時,老師提到不了解HA就擅自開啟,有時候會比沒開還慘。
好啦,經驗分享完了,下面會繼續接續上次的Django架站SOP。
環境
- Django: version 1.11.15
- Wsgi: python36u-mod_wsgi
Django
- 下載Django
sudo /usr/local/bin/pip3 install django==1.11.15
sudo /usr/local/bin/pip3 install pymysql
- 配置Django
sudo mkdir -p /var/www/html/django
cd /var/www/html/django
- 建置Django專案
django-admin startproject myproject
- 添加static目录
sudo vim myproject/settings.py
- 新增「STATIC_ROOT = os.path.join(BASE_DIR, "static/")」
- 新增限制存取的IP
ALLOWED_HOSTS = ['*']
- 新建資料庫(sqlite)
sudo /usr/local/bin/python3 manage.py makemigrations
sudo /usr/local/bin/python3 manage.py migrate
- 執行Django測試
python3 manage.py runserver
使用wsgi串接Apache和Django
- 下載mod_wsgi
sudo yum install python36u-mod_wsgi
- 導出Apache所需的mod_wsgi模組
sudo mod_wsgi-express install-module
-
- 可得LoadModule 、 WSGIPythonHome
- 配置apache配置文件
sudo vim /etc/httpd/conf/httpd.conf
- 新增剛剛得到的LoadModule進入文件中
- LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
-
- 新增django.conf文件
sudo vim /etc/httpd/conf.d/django.conf
WSGIPythonHome "/usr" #寫剛剛得到的
Listen 8080
<VirtualHost *:8080>
Alias /static /var/www/html/django/myproject/static
<Directory /var/www/html/django/myproject/static>
Require all granted
</Directory>
<Directory /var/www/html/django/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess myproject
WSGIScriptAlias / /var/www/html/django/myproject/myproject/wsgi.py
</VirtualHost>
- 修改Django專案中的wsgi.py
vim /var/www/html/django/myproject/myproject/wsgi.py
import os
import sys
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
sys.path.append('/var/www/html/django/myproject')
application = get_wsgi_application()
- 修改專案權限
sudo chmod -R 755 /var/www/html
sudo chown -R apache:apache /var/www/html
- 原 :
- 改 :